package cn.tedu.apiday06;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

//测试Map
public class MapAction {
    public static void main(String[] args) {
        //创建对象------通过泛型，约束map集合的元素类型，而且需要同时约束key和value的类型
        Map <Integer,String> map = new HashMap<>();
        //常用方法
        map.put(1,"孙");
        map.put(2,"符");
        map.put(3,"刘");
        //特点 数据无序 默认一开始是null 加了数据才赋值
        System.out.println(map);
        //map.clear();//从此映射中移除所有映射关系。
        System.out.println(map.containsKey(1314));//判断map中是否包含指定的key
        System.out.println(map.containsValue(""));//判断map中是否包含指定的value
        System.out.println(map.equals("jack"));//判断map是否和指定的元素相等
        System.out.println(map.get(1));//根据指定的key获取对应的value
        System.out.println(map.hashCode());//获取map的哈希码值
        System.out.println(map.isEmpty());//判断map是否为空
        System.out.println(map.remove(3));//根据指定的key删除记录，并返回删除的value
        System.out.println(map.size());//获取map里元素的个数
        Collection <String> c = map.values();//把map里的所有value们，放入Collection中
        for (String value: c) {
            System.out.println("value="+value);
        }
        //迭代map----map本身来讲，并没有直接的迭代的方式，只能间接的把map里的数据放入set里，然后遍历set
        //第一种遍历方式：Set<K>KeySet()------就是把map里的所有key们放入set中
        Set <Integer> set = map.keySet();
        for (Integer key:set
             ) {//遍历set  拿到每个key
            String value = map.get(key);//获取key对应的value
            System.out.println(key+"+"+value);
        }
        //Set<Map.Entry<K,V>> entrySet()------是把map里的一条数据包括key和value整体存到set里，并封装成Entry对象
        Set <Map.Entry<Integer,String>> set1 = map.entrySet();
        for (Map.Entry<Integer,String> entry:set1
             ) {//遍历 set ，拿到每个Entry
            Integer key = entry.getKey();//获取Entry存着的Key
            String value = entry.getValue();//获取Entry存着的Value
            System.out.println(key+"==="+value);
        }
    }
}
